﻿#include "scene_play.h"

CScenePlay::CScenePlay(int ScreenWidth, int ScreenHeight): CGameState(Config::PLAY_BACKGROUND)
{
	_screen_width = ScreenWidth;
	_screen_height = ScreenHeight;
}

CScenePlay::~CScenePlay()
{
	delete _mario;
}

void CScenePlay::InitElements(LPDIRECT3DDEVICE9 d3dDevice)
{
	//Gọi lại khởi tạo kế thừa của màn
	CGameState::InitElements(d3dDevice);
	
	//Khởi tạo mario
	_mario = new CMario(_SpriteHandler, 50, Config::PLAY_GROUND + 33, _screen_width, _screen_height);
	_mario->SetGround(Config::PLAY_GROUND);
	_mario->Init(d3dDevice);

	//Khởi tạo quái vật

	//Nấm
	_mushrooms = new CMushroom(_SpriteHandler, 800, Config::PLAY_GROUND + 33, _screen_width, _screen_height);
	_mushrooms->SetGround(Config::PLAY_GROUND);
	_mushrooms->Init(d3dDevice);

}

void CScenePlay::Show()
{
	
}

void CScenePlay::Hide()
{

}

void CScenePlay::UpdateElements(int t)
{
	_mario->Update(t);
	_mushrooms->Update(t);
}

void CScenePlay::DrawElements()
{
	_mario->Draw();
	_mushrooms->Draw();

	
}

void CScenePlay::ProcessInput(LPDIRECT3DDEVICE9 d3dDevice, int Delta, BYTE *KeyStates)
{
	//Xử lý các phím nhấn giữ của mario
	if(_IsKeyDown(KeyStates, DIK_LEFT))
	{
		_mario->KeyLeftPress();
	}
	else if(_IsKeyDown(KeyStates, DIK_RIGHT))
	{
		_mario->KeyRightPress();
	}
}

void CScenePlay::OnKeyDown(int KeyCode)
{
	//Xử lý các phím được nhấn của mario
	switch (KeyCode)
	{
		case DIK_LEFT:
		case DIK_RIGHT:
			_mario->KeyMoveDown();
			break;

		case DIK_SPACE:
			_mario->KeyJumpDown();
			break;

		case DIK_T:
			_mario->SetToBig();
			break;
	}
}

void CScenePlay::OnKeyUp(int KeyCode)
{
	//Xử lý các phím được thả sau khi nhấn của mario
	switch (KeyCode)
	{
		case DIK_LEFT:
		case DIK_RIGHT:
			_mario->KeyMoveUp();
			break;
		
		case DIK_SPACE:
			_mario->KeyJumpUp();
			break;
	}
}